iT邦幫忙

2022 iThome 鐵人賽

DAY 27
0
Modern Web

為期 N 天的 react 小冒險系列 第 27

用 react hook 做一個 wordle clone 猜字遊戲-part2-day 27

  • 分享至 

  • xImage
  •  

昨天好不容易搞定了外觀
今天來處理得到題目答案的部分

獲得題目的答案

要獲得題目的答案有幾種方法,分別是

  • 第三方api
  • 自有的資料庫
  • json file 執行 json server

這邊用 json server 這個方法,一樣老樣子安裝 json-server,terminal 輸入 npm install -g json-server如果沒有權限安裝的話就sudo

要確定否有安裝到的話,可以用這個指令看有沒有真的 global install

npm list -g --depth 0

選要在哪個 port 上執行 json-server

基礎用法長這樣,路徑部分依照資料夾的狀態設置

json-server ./路徑/db.json --port 3001

如果出現錯誤 json-server: command not found

總是有發生意外的時候,看 package.json 明明有安裝 dependencies,但 terminal 卻出現 command not found 的警告
在 terminal 查看一下版本

json-server --version

如果這裡仍然顯示 command not found ,改

npx json-server --watch ./db/db.json

但可能進一步會出現 ReferenceError: primordials is not defined ,簡單講就是 node 版本跟安裝的依賴版本不相容,有幾個方法..

  • 把該專案的 node 版本降級 (降到 10.多
  • 升級 gulp (但也不少人反映仍有問題
  • 砍掉 local 資料夾的 node module,在 package.json 同資料夾內新增 npm-shrinkwrap.json 這個檔案,目的是鎖定某個依賴項目的版本
{
  "dependencies": {
    "graceful-fs": {
      "version": "4.2.2"
      }
    }
}

詳細情況可以參考這個
stackoverflow
github issues

結果最後搞了半天 終於暫時 run 起來了
db.json 放桌面,terminal 輸入指令,意思就是在 port3001 上run json-server
watch 的檔案為 db.json

npx json-server --watch db.json -p3001

terminal 成功的話會顯示如下

這時候在瀏覽器網址列輸入

http://localhost:3001/

會看到這樣的畫面

可以連結到 solutions (http://localhost:3001/solutions)
進行模擬的 get / post 動作,具體的路徑則取決於你的 db.json 結構

這裡的 db.json 長這樣,節錄部分內容

{
  "solutions": [
    { "word": "spade", "id": 1 },
    { "word": "toast", "id": 2 },
    { "word": "drive", "id": 3 }
  ]
}

接到 json-server 的資料後


上一篇
用 react hook 做一個 wordle clone 猜字遊戲-part1(遊戲規則 / 外觀)-day 26
下一篇
用 react hook 做一個 wordle clone 猜字遊戲-part3-day 28
系列文
為期 N 天的 react 小冒險30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言